package com.shareyi.baseproject.kernel.common.spi.message;

import com.shareyi.baseproject.kernel.common.valid.Validate;

import java.util.function.Function;

/**
 * 消息发送
 *
 * @author david
 * @date 2021-09-01
 */
public interface MessageSender {

    /**
     * 发送消息
     *
     * @param topic      消息主题
     * @param businessId 业务主键
     * @param body       消息体
     * @param function   转换器
     */
    default <T> void send(String topic, String businessId, T body, Function<T, String> function) {
        Validate.notNull(body, "发送对象不能为空");
        send(topic, businessId, function.apply(body));
    }

    /**
     * 发送消息
     *
     * @param topic      消息主题
     * @param businessId 业务主键
     * @param content    消息体
     */
    void send(String topic, String businessId, String content);
}
